// 直接写是必选参数
const fn1 = (x: number, y: number): number => x;
fn1(1, 2);
// 加上？，是可选参数
const fn2 = (x: number, y?: number): void => {};
fn2(1);
// 直接写默认值，就是可选参数
const fn3 = (x: number, y: number = 0): void => {};
fn3(1);
// 剩下所有参数
const fn4 = (...args: number[]): void => {};

// 函数重载
function reverse(val: string): string;
function reverse(val: number): number;
function reverse(val: string | number): string | number {
  if (typeof val === "string") {
    return val.split("").reverse().join("");
  } else {
    return Number(val.toString().split("").reverse().join(""));
  }
}

console.log(reverse("123")); // '321'
console.log(reverse(123)); // 321

// const str = reverse("123");
// (str as string).split("");

const str = reverse("123");
str.split("");
